package com.xcl.mapper;

import com.xcl.pojo.Loading;
import com.xcl.pojo.Vehicle;
import com.zzg.entity.Driver;
import com.zzg.entity.Transportprotocol;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * @ClassName LoadingMapper
 * @Description 装车配载数据访问层
 * @Author: xiaochaolei
 * @date 2021/6/28 10:04
 * @Version 1. 0
 */
@Mapper
public interface LoadingMapper {
    /**
     * 得到未分配的运单和货物信息
     * @return 运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateOne();

    /**
     * 分页查询未分配的运单和货物信息
     * @param page 页码数
     * @param limit 条码数
     * @return 运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateOneLimit(@Param("page")int page,@Param("limit")int limit);

    /**
     * 得到运输中的运单和货运信息
     * @return  运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateTwo();



    /**
     * 分页查询未分配的运单和货物信息
     * @param page 页码数
     * @param limit 条码数
     * @return 运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateTwoLimit(@Param("page")int page,@Param("limit")int limit);




    /**
     * 得到装配中的运单和货物信息
     * @return 运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateThree();





    /**
     * 分页查询未分配的运单和货物信息
     * @param page 页码数
     * @param limit 条码数
     * @return 运单和货物信息集合
     */
    public List<Loading> getLoadingBYStateThreeLimit(@Param("page")int page,@Param("limit")int limit);


    /**
     * 新增协议信息
     * @param transportprotocol 协议信息
     * @return 影响行数
     */
    public int insertTransportprotocol(Transportprotocol transportprotocol);


    /**
     * 新增车辆信息
     * @param driver 车辆信息
     * @return 影响行数
     */
    public int insertDriver(Driver driver);

    /**
     * 多条件查询得到装车配载集合
     * @param waybill_id 运单号
     * @param substationUnit 到达分站
     * @param modeTransport 运输方式
     * @param startDate 起始日期
     * @param endingDate 结束日期
     * @return  装车配载集合
     */
    public List<Loading> getLoadingByWhere(@Param(value ="waybill_id" )String waybill_id
            ,@Param(value ="substationUnit" ) String substationUnit
            ,@Param(value ="modeTransport" ) String modeTransport
            ,@Param(value ="startDate" ) String startDate
            ,@Param(value ="endingDate" ) String endingDate
            ,@Param(value ="page" )int page
            ,@Param(value ="limit" )int limit);




    /**
     * 多条件查询得到装车配载集合
     * @param waybill_id 运单号
     * @param modeTransport 运输方式
     * @return  装车配载集合
     */
    public List<Loading> getLoadingByWhereTwo(@Param(value ="waybill_id" )String waybill_id
            ,@Param(value ="modeTransport" ) String modeTransport
            ,@Param(value ="page" )int page
            ,@Param(value ="limit" )int limit);


    /**
     * 多条修改
     * @param strings 数据集合
     * @return 影响行数
     */
    public int upteModificationOne(@Param("str")String[] strings);


    /**
     * 修改为配载中
     * @param strings 数组
     * @return 影响行数
     */
    public int upteModificationTwo(@Param("str")String[] strings);


    /**
     * 修改为为装配
     * @param strings 数组
     * @return 影响行数
     */
    public int upteModificationThree(@Param("str")String[] strings);


    /**
     * 修改状态为运输中
     * @param id 需要修改的id
     * @return 影响的行数
     */
    public int upteModification(@Param(value = "id") String id);


    /**
     * 得到所有的司机名称
     * @return 车辆集合
     */
    public List<Driver> getOwnerNameByDriver();

    /**
     * 根据id 查询到车辆信息
     * @param id 车辆id
     * @return 车辆信息
     */
    public Vehicle getDriverByDriverId(@Param(value = "id") String id);

}
